package com.etime.shycourse.controller;

import com.etime.shy.common.BaseMessage;
import com.etime.shy.common.ListMessage;
import com.etime.shy.common.PojoMessage;
import com.etime.shycourse.pojo.Coursetype;
import com.etime.shycourse.services.interfaces.CoursetypeServices;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author wb
 * @since 2021-12-17
 */
@Api(tags = "课程类型管理数据接口")
@RestController
@RequestMapping("/sys/courseType")
public class CoursetypeController {
    @Autowired
    private CoursetypeServices service;

    @ApiOperation("增加课程类型功能")
    @ApiImplicitParam("添加父类时  可不传 courseptypeid 默认-1")
    @PostMapping("/insert/one")
    public PojoMessage<Coursetype> insertCourseTypeOne(Coursetype coursetype) {
        //父类型id = -1 courseptypeid
        Coursetype courseTypeOne = service.insertCourseTypeOne(coursetype);
        PojoMessage<Coursetype> msg = new PojoMessage<>();
        if (courseTypeOne != null) {
            msg.setCode(1);
            msg.setData(courseTypeOne);
        } else {
            msg.setCode(0);
            msg.setMsg("添加课程大类型失败");
        }
        return msg;
    }

    @ApiOperation("增加、修改课程类型功能")
    @ApiImplicitParam("1、修改课程类型父类、子类时 必传：coursetypeid ,2、添加子类时（父类型名称=类型名称；父类型id=类型id）")
    @PostMapping("/insert/two")
    public BaseMessage insertCourseType(Coursetype coursetype) {
        int rtn = service.insertCourseType(coursetype);
        BaseMessage msg = new BaseMessage();
        msg.setCode(rtn);
        if (rtn > 0) {
            msg.setMsg("增加或修改课程成功");
        } else {
            msg.setCode(0);
            msg.setMsg("增加或修改课程失败");
        }
        return msg;
    }

    @ApiOperation("查询所有课程类型")
    @ApiImplicitParam("没有条件 可以用于初始化课程类型下拉列表")
    @GetMapping("/list")
    public ListMessage<Coursetype> selectCourseTypeList() {
        List<Coursetype> list = service.selectCourseTypeList(null);
        ListMessage<Coursetype> msg = new ListMessage<>();
        if (list != null) {
            msg.setCode(1);
            msg.setDatalist(list);
        } else {
            msg.setCode(0);
            msg.setMsg("没有指定课程类型的数据");
        }
        return msg;
    }

    @ApiOperation("查询所有课程类型")
    @ApiImplicitParam("没有条件 可以用于初始化课程类型下拉列表")
    @GetMapping("/list1")
    public ListMessage<Coursetype> selectCourseTypeList1() {
        List<Coursetype> list = service.selectCourseTypeList(null);
        ListMessage<Coursetype> msg = new ListMessage<>();
        if (list != null) {
            msg.setCode(1);
            msg.setDatalist(list);
        } else {
            msg.setCode(0);
            msg.setMsg("没有指定课程类型的数据");
        }
        return msg;
    }

    @ApiOperation("查询所有课程类型")
    @ApiImplicitParam("没有条件 可以用于初始化课程类型下拉列表")
    @GetMapping("/list/{coursetypeicon}")
    public ListMessage<Coursetype> selectCourseTypeLists(@PathVariable Integer coursetypeicon) {
        List<Coursetype> list = service.selectCourseTypeList(coursetypeicon);
        ListMessage<Coursetype> msg = new ListMessage<>();
        if (list != null) {
            msg.setCode(1);
            msg.setDatalist(list);
        } else {
            msg.setCode(0);
            msg.setMsg("没有找到课程类型");
        }
        return msg;
    }

    /**
     * 查询课程一条类型
     *
     * @param coursetype
     * @return Coursetype
     */
    @ApiOperation("查询课程一条类型")
    @ApiImplicitParam(name = "coursetypeid", value = "根据课程类型id coursetypeid 查询一条数据")
    @GetMapping("/get")
    public PojoMessage<Coursetype> selectCourseType(Coursetype coursetype) {
        Coursetype courseType = service.selectCourseType(coursetype);
        PojoMessage<Coursetype> msg = new PojoMessage<>();
        if (courseType != null) {
            msg.setCode(1);
            msg.setData(courseType);
        } else {
            msg.setCode(0);
            msg.setMsg("查询课程数据失败");
        }
        return msg;
    }
}

